/**   
* @Title: DB.java
* @Package com.jbeer.framework.db
* @author Bieber
* @date 2014年6月3日 下午2:46:19
* @version V1.0   
*/

package com.jbeer.framework.db.sqlrunner;

import java.sql.Connection;
import java.sql.SQLException;

import com.jbeer.framework.db.DataSourceUtil;
import com.jbeer.framework.db.JBeerDBContext;
import com.jbeer.framework.exception.DBException;

/**
* <p>类功能说明:数据库操作类</p>
* <p>类修改者	    修改日期</p>
* <p>修改说明</p>
* <p>Title: DB.java</p>
* @author Bieber <a mailto="bieber.jbeer@hotmail.com">bieber.jbeer@hotmail.com</a>
* @date 2014年6月3日 下午2:46:19
* @version V1.0
*/

public class DB {

    /**
     * 
    * <p>函数功能说明:insert操作入口</p>
    * <p>Bieber  2014年6月6日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @return T
     */
    public static Insert insert(Object t) throws DBException {
        try {
            return new Insert(t, getConnection());
        } catch (Exception e) {
            throw new DBException(e);
        }
    }

    /**
     * 
    * <p>函数功能说明:insert操作入口</p>
    * <p>Bieber  2014年6月6日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @return T
     */
    public static Insert insert(Class<?> entityClass) throws DBException {
        try {
            return new Insert(entityClass, getConnection());
        } catch (SQLException e) {
            throw new DBException(e);
        }
    }

    /**
     * 
    * <p>函数功能说明:insert操作入口</p>
    * <p>Bieber  2014年6月6日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @return T
     */
    public static Insert insert(String entityName) throws DBException {
        try {
            return new Insert(entityName, getConnection());
        } catch (SQLException e) {
            throw new DBException(e);
        }
    }

    /**
     * 
    * <p>函数功能说明:更近操作的入口</p>
    * <p>Bieber  2014年6月6日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @param entityClass 更新的实体类
    * @return int
     * @throws DBException 
     */
    public static Update update(Class<?> entityClass) throws DBException {
        try {
            return new Update(entityClass, getConnection());
        } catch (Exception e) {
            throw new DBException(e);
        }
    }
    
    /**
     * 
    * <p>函数功能说明:更近操作的入口</p>
    * <p>Bieber  2014年6月6日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @param entityClass 更新的实体类
    * @return int
     * @throws DBException 
     */
    public static Update update(Object entityObject) throws DBException {
        try {
            return new Update(entityObject, getConnection());
        } catch (Exception e) {
            throw new DBException(e);
        }
    }

    /**
     * 
    * <p>函数功能说明:执行删除语句</p>
    * <p>Bieber  2014年6月7日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @return Delete
     * @throws DBException 
     */
    public static Delete delete(Class<?> entityClass) throws DBException {
        try {
            return new Delete(entityClass, getConnection());
        } catch (Exception e) {
            throw new DBException(e);
        }
    }

    /**
     * 
    * <p>函数功能说明:执行删除语句</p>
    * <p>Bieber  2014年6月7日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @return Delete
     * @throws DBException 
     */
    public static Delete delete(String entityName) throws DBException {
        try {
            return new Delete(entityName, getConnection());
        } catch (Exception e) {
            throw new DBException(e);
        }
    }

    /**
     * 
    * <p>函数功能说明:更近操作的入口</p>
    * <p>Bieber  2014年6月6日</p>
    * <p>修改者名字 修改日期</p>
    * <p>修改内容</a>  
    * @param entityClass 更新的实体类
    * @return int
     * @throws DBException 
     */
    public static Update update(String entityName) throws DBException {
        try {
            return new Update(entityName, getConnection());
        } catch (Exception e) {
            throw new DBException(e);
        }
    }

    
    
    public static Select select(String entityName) throws DBException{
        
        return null;
    }
    
    public static Select select(Class<?> entityClass) throws DBException{
        
        return null;
    }
    
    private static Connection getConnection() throws SQLException {
        return DataSourceUtil.getConnection(JBeerDBContext.datasource);
    }

}
